<?php 

namespace app\models;
use yii\db\ActiveRecord;
use yii;

 class Category extends ActiveRecord
 {
    public static function tableName(){
    return "{{%category}}";
    }
    public function attributeLabels(){
    	return [
    	'parentid'=>'上级分类',
    	'title'=>'分类名称'
    	];

    }
    public function rules()
    {
    	return [
          ['parentid','required','message'=>'用户帐号不能为空'],
   
    	['title','required','message'=>'标题不能为空'],


    	];
    }
    public function add($data){
    	$data['createtime']=time();
    	if($this->load($data) && $this->save()){
    		return true;
    	}
    	return false;
    }

    public function getData()
    {
        $cates=self::find()->all();
        $cates =yii\helpers\ArrayHelper::toArray($cates);
        return $cates;
    }
    public function getTree($cates,$pid=0){
        $tree=[];
        foreach ($cates as $key => $cate) {
           if($cate['parentid']==$pid){
            $tree[]=$cate;
             $tree=array_merge($tree,$this->getTree($cates,$cate['cateid']));

           }
        }
        return $tree;
    }
    public function getTree2($cates,$pid=0){
        $tree=[];
        foreach ($cates as $key => $cate) {
           if($cate['parentid']==$pid){
            $cate['child']=$this->getTree($cates,$cate['cateid']);
			 $tree[]=$cate;
           }
        }
        return $tree;
    }
	
    public function setPrefix($data,$p="|----")
    {

        $tree=[];
        $num=1;
        $prefix=[0=>1];
        while ($val=current($data)) {
            $key=key($data);
            if($key>0){
                if($data[$key-1]['parentid']!=$val['parentid']){
                    $num++;
                }
            }
            if(array_key_exists($val['parentid'],$prefix)){
                $num=$prefix[$val['parentid']];
            }
            $val['title']=str_repeat($p, $num).$val['title'];
            $prefix[$val['parentid']]= $num;
            $tree[]=$val;
             next($data);

        }
        return $tree;

    }

    public function getOptions()
    {
        $data=$this->getData();
        $tree=$this->getTree($data,0);
        $tree=$this->setPrefix($tree);
        $options=[0=>'添加上级分类'];
        foreach ($tree as  $cate) {
            $options[$cate['cateid']]=$cate['title'];
        }
        return $options;
    }


 }